package string.leetcode;

import java.util.*;

/**
 * @author yuisama
 * @date 2023年07月09日 11:28
 * @description 第一个出现一次的字符 => 哈希表
 */
public class Offer50_FirstUniqChar {
    public char firstUniqChar(String s) {
        if (s.length() == 0) {
            return ' ';
        }
        // 按字符出现的先后次序保存字符
        Map<Character,Integer> map = new LinkedHashMap<>();
        for (int i = 0; i < s.length(); i++) {
            char c = s.charAt(i);
            map.put(c,map.getOrDefault(c,0) + 1);
        }
        // 遍历整个map集合，返回第一个出现次数为1的字符
        for (Map.Entry<Character,Integer> entry : map.entrySet()) {
            if (entry.getValue() == 1) {
                return entry.getKey();
            }
        }
        // 走完整个map都没返回，不存在出现一次的字符
        return ' ';
    }
}
